import Vue from 'vue'
import Vuex from 'vuex'
import moudles1 from './moudles/moudle1'
import moudles2 from './moudles/moudle2'
// import createLogger from 'vuex/dist/logger'
import { STORAGE_TOKEN } from './mutation-type'
import { setStorage, getStorage } from '../utils/storage'

Vue.use(Vuex)

const USER_TOKEN = 'USER_TOKEN'

export default new Vuex.Store({
  // logger 插件会生成状态快照，所以仅在开发环境使用
  // plugins: process.env.NODE_ENV !== 'production' ? [createLogger()] : [],
  // 在严格模式下，无论何时发生了状态变更且不是由 mutation 函数引起的，将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。
  // 不要在发布环境下启用严格模式！严格模式会深度监测状态树来检测不合规的状态变更——请确保在发布环境下关闭严格模式，以避免性能损失。
  // strict: process.env.NODE_ENV !== 'production',
  state: {
    // 存储登录后的token数据,getStorage是拿取localStorage里面的token，没有就为null
    userToken: getStorage(USER_TOKEN),
    // 跳转到登录页的前一页
    beforeLogin: null,
    // 图片的baseUrl
    imgBaseUrl: ''
  },
  // getters: {
  //   getcount (state) {
  //     return state.count
  //   }
  // },
  mutations: {
    // 存入token
    [STORAGE_TOKEN] (state, payload) {
      // 将token数据存入到全局vuex中，并存入到本地缓存
      state.userToken = payload
      setStorage(USER_TOKEN, payload)
      // console.log(state)
      // console.log(payload)
    }
  },
  actions: {
    incement (ctx) {
      ctx.commit('incement')
    }
  },
  modules: {
    a: moudles1,
    b: moudles2
  }
})
